from PIL import Image, UnidentifiedImageError
import tkinter
import os
from tkinter import filedialog
from tkinter import messagebox
import shutil
import time
homedir=os.environ.get('USERPROFILE')
tempdir=".\\PicsAssistantTemp"
print(homedir)
def archive(inputfile,outputdir,quality,size):
    inputfilename=inputfile.split('/')[-1]
    inputfilename=inputfilename.split('.')[0]
    quality=int(quality)
    size=int(size)
    size=size*0.01
    
    outputfile=outputdir+"/"+inputfilename+".jpg"
    print(inputfilename,outputfile,outputdir,quality,size)
    if (inputfile==""):
        print("错误：未选择图片")
    if (outputdir==""):
        print("错误：未选择输出文件夹")
    压缩子窗口=tkinter.Tk()
    压缩子窗口.title("正在压缩")
    空行1_1=tkinter.Label(压缩子窗口,text="        ",height=1).grid(row=1,column=1)
    检查原图片文字=tkinter.Label(压缩子窗口,text="正在检查原图片...",height=1).grid(row=2,column=2)  
    if (inputfile==""):
        未选择文件提示=tkinter.Label(压缩子窗口,text="    未选择图片！    压缩失败！",fg="red",height=1).grid(row=2,column=3)  
        return
    try:
        image=Image.open(inputfile) 
    except UnidentifiedImageError:
        图片类型错误提示=tkinter.Label(压缩子窗口,text="    图片不能识别！    压缩失败！",fg="red",height=1).grid(row=2,column=3)
        return
    图片检查成功提示=tkinter.Label(压缩子窗口,text="    图片打开成功！",fg="green",height=1).grid(row=2,column=3)
    
    图片大小提示=tkinter.Label(压缩子窗口,text=inputfilename+"的大小为"+str(int(os.path.getsize(inputfile)/1024))+"KB",fg="blue",height=1).grid(row=2,column=4)
    image=image.convert("RGB")
    x=int(size*image.size[0])
    y=int(size*image.size[1])
    print(x,y)
    检查文件夹文字=tkinter.Label(压缩子窗口,text="正在检查文件夹...",height=1).grid(row=3,column=2)  
    if (os.path.isdir(outputdir)):
        文件夹打开成功提示=tkinter.Label(压缩子窗口,text="    文件夹打开成功！",fg="green",height=1).grid(row=3,column=3)
    else:
        文件夹打开失败提示=tkinter.Label(压缩子窗口,text="    文件夹不能打开！    压缩失败！",fg="red",height=1).grid(row=3,column=3)
        return
    调整缩放文字=tkinter.Label(压缩子窗口,text="正在调整缩放...",height=1).grid(row=4,column=2)  
    image=image.resize((x,y),Image.ANTIALIAS)
    if (os.path.exists(tempdir)==0):
        os.makedirs(tempdir)
    
    调整质量文字=tkinter.Label(压缩子窗口,text="正在调整质量...",height=1).grid(row=5,column=2)  
    image.save(tempdir+"\\"+inputfilename+".jpg",quality=quality)
    保存文字=tkinter.Label(压缩子窗口,text="正在保存...",height=1).grid(row=6,column=2)  
    大小信息=tkinter.Label(压缩子窗口,text="压缩后大小为"+str(int(os.path.getsize(tempdir+"\\"+inputfilename+".jpg")/1024))+"KB",fg="blue",height=1).grid(row=6,column=3)  
    shutil.copyfile(tempdir+"\\"+inputfilename+".jpg",outputfile)
    保存成功文字=tkinter.Label(压缩子窗口,text="已经保存到"+outputfile,fg="blue",height=1).grid(row=7,column=2)
if(os.path.exists(tempdir)):
    shutil.rmtree(tempdir)
def about():
    about=tkinter.Tk()
    about.title("关于")
    about.geometry("600x300")
    about.resizable(0,0)
    text01=tkinter.Label(about,text="软件名称：图片压缩助手\n\n软件版本：3.0.0\n\n软件作者：阜新实验中学高中2019级某同学\n\n    反馈：MethylOrangeZ@qq.com（不定时查看）\n\n更新日志：原来乱七八糟的代码重写。批量压缩的功能也删了，应该没有人会使用这个功能。\n可以完全鼠标操作，更加符合直觉。界面更加简洁。").place(relx=0.5,rely=0.5,anchor="center")
    pass
def help():
    help=tkinter.Tk()
    help.title("帮助")
    help.geometry("400x300")
    help.resizable(0,0)
    text01=tkinter.Label(help,text="暂时没发现什么问题\n邮箱：MethylOrangeZ@qq.com（不定时查看）").place(relx=0.5,rely=0.5,anchor="center")
    pass
主窗口=tkinter.Tk()#main window
主窗口.title("软件压缩助手")
主窗口.geometry("800x600")
主窗口.resizable(0,0)
原图片位置=tkinter.StringVar()
空行1=tkinter.Label(主窗口,text="        ",height=2).grid(row=1,column=1)
#选择原图片组
原图片位置=tkinter.StringVar()
提示语原图片位置=tkinter.Label(主窗口,text="原图片位置：",height=1).grid(row=2,column=2)
打开图片按钮=tkinter.Button(主窗口,text="打开图片",width=8,height=1,command=lambda: 原图片位置.set(tkinter.filedialog.askopenfilename())).grid(row=2, column=4)
原图片位置输入框=tkinter.Entry(主窗口,textvariable=原图片位置,width=64).grid(row=2,column=3)
空行2=tkinter.Label(主窗口,text="        ",height=1).grid(row=3,column=1)
#选择输出目录组
输出目录=tkinter.StringVar()
提示语输出目录=tkinter.Label(主窗口,text="输出文件夹：",height=1).grid(row=4,column=2)
打开输出目录按钮=tkinter.Button(主窗口,text="选择目录",width=8,height=1,command=lambda: 输出目录.set(tkinter.filedialog.askdirectory())).grid(row=4, column=4)
输出目录输入框=tkinter.Entry(主窗口,textvariable=输出目录,width=64).grid(row=4,column=3)
空行2=tkinter.Label(主窗口,text="        ",height=1).grid(row=5,column=1)
#选择质量
质量=tkinter.StringVar()
质量.set(100)
选择质量=tkinter.Scale(主窗口, label='质量（百分比）', from_=1, to=100, orient=tkinter.HORIZONTAL, length=500, showvalue=1, resolution=1,variable=质量).grid(row=6,column=3)
空行3=tkinter.Label(主窗口,text="        ",height=1).grid(row=7,column=1)
#选择缩放
缩放=tkinter.StringVar()
缩放.set(100)
选择缩放=tkinter.Scale(主窗口, label='缩放（百分比）', from_=1, to=100, orient=tkinter.HORIZONTAL, length=500, showvalue=1, resolution=1,variable=缩放).grid(row=8,column=3)
#操作
空行4=tkinter.Label(主窗口,text="      ",height=1).grid(row=9,column=1)
inputfile=原图片位置
开始压缩按钮=tkinter.Button(主窗口,text="开始压缩",width=8,command=lambda:archive(原图片位置.get(),输出目录.get(),质量.get(),缩放.get())).place(anchor='center',relx=0.25,rely=0.6)
关于作者按钮=tkinter.Button(主窗口,text="关于",width=8,command=about).place(anchor='center',relx=0.5,rely=0.6)
帮助按钮=tkinter.Button(主窗口,text="帮助",width=8,command=help).place(anchor='center',relx=0.75,rely=0.6)
主窗口.mainloop()
if(os.path.exists(tempdir)):
    shutil.rmtree(tempdir)